1. Field of the Invention
The present invention is generally related to the design and implementation of hard real-time capable operating systems and, in particular, to an operating system design that uses modular components that are tightly coupled to a micro-kernel like core component to establish an operating system.
2. Background of the Invention
The demands on computer systems, including their operating systems, continues to increase. These demands, affecting the expanding variety and complexity of computer system environments, have required operating system to likewise become greatly varied and complex. The level of current operating system complexity has become so substantial that the time required for general purpose operating systems to mature is now stretching into a decade long time-frame. The efforts to retrofit or modernize exiting mature operating systems serves unsurprisingly to retard the maturation process itself.
The desired features of a modern operating system can be readily enumerated: stable, configurable for divergent computing environments, having minimal hardware requirements, low system management needs, high performance, if not providing near to hard real-time performance, low operating system execution overhead, support for third party kernel level software objects, adaptability to specialized computing environment applications, etc. The number of desired features seems to preclude the development of any operating system that is of general applicability over any significant range of computing system scale or purpose.
Currently, the more widely utilized operating system include Unix.RTM., and the various Unix.RTM. derivative operating systems, and the Windows.RTM. family of operating systems. Other lesser known but widely utilized operating systems are of a scale to effectively support embedded controllers and dedicated function computer systems.
General purpose operating systems are considered to be less than adequately reliable for near and hard real-time applications. Although the Unix.RTM. operating systems are relatively mature and stable, their substantial kernel size and generality precludes use in most dedicated computer systems of moderate scale and certainly in small scale embedded system controller applications. That is, the Unix.RTM. operating system is regarded generally to be too large and monolithic to permit use in anything less than a large scale computer system. Further, many Unix.RTM. API system calls and low level kernel functions are not compatible with the specific execution in performance, resulting in unpredictable response delays in servicing time-critical events. This particular set of variants are therefore not suitable for high-speed computing environments, or situations that require only modest degrees of predicably bounded event response time.
Other modern general purpose operating systems, such as Windows.RTM. NT.TM., implement fully preemptable kernels. Further, these operating systems are, like Unix.RTM., monolithic with large system resource requirements. Consequently, these other operating systems are generally inadequate for meeting expected operating system demands. The remaining relatively proprietary operating systems are largely focused on serving embedded control and dedicated computer operating environments. These operating systems generally provide relatively compact, preemptable kernels. While requiring substantially less system resources, the services obtainable through the operating system are correspondingly limited. The system resources that are provided are again often packaged as part of a monolithic kernel. Further, routine modification of kernel based operating system services typically requires extensive access to and likely modification of the operating system kernel source code. Often, the kernel modifications necessary to support new operating system services results in an increased system performance and resources.
The Windows.RTM. CE.TM. embedded operating system represents an effort to bridge the gap between the large general purpose operating systems and the compact embedded operating systems used at the other extreme of computer system scale. Windows.RTM. CE.TM. in particular is a derivative of other Windows.RTM. products re-worked to provide highly selected and generally limited functionality while presenting a highly compact operating system with reduced resource requirements. While well adapted to support small interactive computing appliances, Windows.RTM. CE.TM. has the same limitations as the embedded operating systems, including limited adaptability to third party kernel software.
Many fundamentally different efforts have been made in recent years to develop operating systems that are small, easily extended and efficient in both execution performance and event response times. Once such effort involves the use of a micro-kernel/server operating system architecture. In this design, a micro-kernel provides some basic process control functions. Typically, a multiplicity of servers are relied upon, each executing in their respective kernel threads, to provide specific kernel level functions. One implementation of the micro-kernel based operating system is known as the Mach operating system, and was first developed at Carnegie Mellon University.
While the micro-kernel/server design provides a substantial degree of modularity and extensibility, such operating systems tend to be inefficient in their use of available computing resources and in managing event responsivity. For example, a conventional micro-kernel/server design communicates by direct messages passed between the micro-kernel and the different then executing servers. Since each server executes in its own kernel thread, each message sent incurs at least two distinct context changes: one by the micro-kernel to forward a message and another by the server to perform the function requested by the message. Although kernel thread context switches are lightweight, all micro-kernel/server intercommunication is performed using messages. Further, blocking kernel functions, needed to maintain the data integrity of certain server functions, introduces unpredictable and unbounded event response latencies. Consequently, the micro-kernel/server operating system design is not well suited for high performance computing environments, particularly including those that require some bounded event response capabilities.
Consequently, there is a clear need for an efficient operating system architecture that is readily scalable, efficient in terms of execution performance and responsiveness events readily re-configurable to accept support for add or modify operating system services provided to application programs.